[专业]求VB中API实现RichTextBox优化追加文本方法

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:13:38
向文本框追加文本常有如下方法:
1、Text1.Text = Text1.Text & str
缺点:内容稍大就特别缓慢
2、Text1.SelStart = Len(Text1.Text)
Text1.SelText = str
缺点:内容较多时Len()耗时较多(10MB内容约15秒)
3、用缓存txtlen记录长度
Text1.SelStart = txtlen
Text1.SelText = str
txtlen = txtlen + Len(str)
此时SelStart方法成为耗时最多步骤,系统要一位一位向后数而不是直接定位到末尾。
4、用Text1.SetFocus
SendKeys "^{End}"代替SelStart,速度非常快。
缺点:SetFocus与SendKeys对输入输出产生严重干扰。

现要在有10MB内容(非常巨大!)的文本框末尾追加一小段字符串(像CuteFTP的消息那样),要求最优化地将光标移到末尾,最好通过API如SendMessage/PostMessage实现。窗口可能不是当前窗口,追加前光标可能不在末尾,不得对输入输出产生干扰,不允许使用SelStart和SendKeys,要达到与SendKeys相近的速度。

此问题极为专业,高分悬赏,非高手勿答,请不要照抄原文,不是最优化不给分。
qq010101提出“先向左移一下”,这我也想过,但如果光标在最左边还是有声音。Ctrl+A虽然永远不会有声音,但会引起闪烁。最好是“Shift+右”,这样除非用户选中了末尾的回车,是不会有声音的。求“Shift+右”的消息实现。
======
看来“Shift+右”太困难,那就勉强用“左”了。光标不一定总在最后,因为用户可能去拖拽和选中。
此为题到此为止,四楼“60.181.226.* 2009-9-15 21:29”正解,为一楼孤独二进制小号。进一步讨论见博客VB中调用API VB中声明API 求VB API中键值操作的实例 如何在VB中使用API函数 求解vb中API编程的术语 VB中API参数如何使用 vb 求常用API函数表 VB 用api 实现 ICMP 协议 连接实例 用vb API 中的ExitWindowEx实现关机为什么没反应 vb中实现键盘输入